Monitoring data streams and scaling computing resources based on the data streams

ABSTRACT

A device may determine values for a set of metrics related to a set of event messages being processed, by a set of server devices, from a set of queues. The values for the set of metrics may be determined as the set of event messages are being processed. Each of the set of queues may be associated with a different subset of event messages and a different subset of server devices. The device may determine to scale a quantity of server devices included in the set of server devices. The quantity of server devices may be scaled to increase the quantity of server devices or to decrease the quantity of server devices. The device may provide a set of instructions to scale the quantity of server devices. The device may perform an action to facilitate accessibility of data related to processing of the set of event messages.

RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.15/904,084, filed Feb. 23, 2018, which is incorporated herein byreference.

BACKGROUND

Auto-scaling is a method used in cloud computing where an amount ofcomputing resources (e.g., servers in a server farm or data center) isscaled automatically. For example, a quantity of active computingresources may be scaled based on a load of the computing resources.Auto-scaling may include scheduled scaling, where computing resourcesare scaled at a scheduled time. In addition, auto-scaling may includepredictive scaling, where computing resources are scaled based on usingpredictive analytics.

SUMMARY

According to some possible implementations, a device may comprise one ormore memories; and one or more processors, communicatively coupled tothe one or more memories, to determine values for a set of metricsrelated to a set of event messages being processed, by a set of serverdevices, from a set of queues. The set of metrics may includelag-related metrics. The values for the set of metrics may be determinedas the set of event messages are being processed. Each of the set ofqueues may be associated with a different subset of event messages and adifferent subset of server devices. The one or more processors maydetermine to scale a quantity of server devices included in the set ofserver devices based on the values for the set of metrics. The quantityof server devices may be scaled to increase the quantity of serverdevices or to decrease the quantity of server devices. The one or moreprocessors may provide a set of instructions to scale the quantity ofserver devices included in the set of server devices after determiningto scale the quantity of server devices. The one or more processors mayperform an action to facilitate accessibility of data related toprocessing of the set of event messages in association with providingthe set of instructions.

According to some possible implementations, a non-transitorycomputer-readable medium may store one or more instructions that, whenexecuted by one or more processors, may cause the one or more processorsto determine values for a set of metrics related to a set of eventmessages being processed, by a set of server devices, from a set ofqueues. Each of the set of queues may be associated with a differentsubset of event messages and a different subset of server devices. Theone or more instructions, when executed by the one or more processors,may cause the one or more processors to determine to modify a quantityof server devices included in the set of server devices based on thevalues for the set of metrics. The quantity of server devices may bemodified to increase the quantity of server devices or to decrease thequantity of server devices. The quantity of server devices may bemodified for one or more subsets of server devices associated with theset of queues. The one or more instructions, when executed by the one ormore processors, may cause the one or more processors to provide a setof instructions to modify the quantity of server devices included in theset of server devices after determining to scale the quantity of serverdevices. The set of instructions may be associated with modifying thequantity of server devices for the one or more subsets of server devicesassociated with the set of queues. The one or more instructions, whenexecuted by the one or more processors, may cause the one or moreprocessors to perform an action to facilitate accessibility of datarelated to processing of the set of event messages in association withproviding the set of instructions.

According to some possible implementations, a method may includedetermining, by a device, values for a set of metrics related to a setof event messages being processed, by a set of server devices, from aset of queues. The values for the set of metrics may be determined asthe set of event messages are being processed. Each of the set of queuesmay be associated with a different subset of event messages and adifferent subset of server devices. The method may include determining,by the device, to scale a quantity of server devices included in the setof server devices based on the values for the set of metrics. Thequantity of server devices may be scaled to increase the quantity ofserver devices or to decrease the quantity of server devices. The methodmay include providing, by the device, a set of instructions to scale thequantity of server devices included in the set of server devices afterdetermining to scale the quantity of server devices. The method mayinclude performing, by the device, an action to facilitate accessibilityof data related to processing of the set of event messages inassociation with providing the set of instructions.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram of an overview of an example implementationdescribed herein;

FIG. 2 is a diagram of an example environment in which systems and/ormethods, described herein, may be implemented;

FIG. 3 is a diagram of example components of one or more devices of FIG.2;

FIG. 4 is a flow chart of an example process for monitoring data streamsand scaling computing resources based on the data streams; and

FIG. 5 is a diagram of an example implementation relating to the exampleprocess shown in FIG. 4.

DETAILED DESCRIPTION

The following detailed description of example implementations refers tothe accompanying drawings. The same reference numbers in differentdrawings may identify the same or similar elements.

Typically, auto-scaling computing resources includes the use ofhistorical information to identify and/or predict particular times whenconsumption of the computing resources might satisfy a threshold (e.g.,to identify and/or predict high consumption times or low consumptiontimes). While this technique can help to ensure that an adequate amountof computing resources are available during high-consumption timesand/or to optimize available computing resources during low-consumptiontimes, this technique is not well suited for real-time fluctuations indemand for the computing resources. As a result, unexpected fluctuationsin demand for the computing resources can disrupt operation of thecomputing resources, can negatively impact a user experience of thecomputing resources (e.g., when the computing resources are associatedwith an application, a webpage, etc. used by the user), and/or the like.

Some implementations described herein provide a streaming data platformthat is capable of monitoring event messages in a set of queuesassociated with a set of computing resources and dynamically scaling theset of computing resources based on monitoring the event messages. Inthis way, the streaming data platform may determine an amount of lagand/or another issue associated with processing of the event messagesassociated with the set of computing resources (e.g., preemptivelybefore the lag has a noticeable impact on a performance of the computingresources) and may scale the computing resources based on the amount oflag and/or the other issue. This reduces an amount of time needed toprocess a queue of event messages by facilitating scaling of thecomputing resources used to process the event messages. In addition,this facilitates more accurate scaling of the computing resources,particularly at times when there is an abnormal amount of demand for thecomputing resources. Further, this reduces or eliminates a need forscheduled and/or predictive scaling based on information related tohistorical demand for computing resources, thereby conserving processingresources associated with scheduled and/or predictive scaling based onhistorical demand for the computing resources.

FIG. 1 is a diagram of an overview of an example implementation 100described herein. As shown in FIG. 1, implementation 100 includesmultiple user devices (shown as user devices UD1 and UD2), a streamingdata platform, and multiple sets of server devices (e.g., shown as afirst set of server devices that includes server device SD1 and a secondset of server devices that includes server device SD2).

As shown by reference number 110, a display associated with user deviceUD1 may display a user interface. For example, the user interface may beassociated with an account (e.g., a bank account, a social mediaaccount, etc.), a system, and/or the like. A user of user device UD1 mayinteract with user interface elements of the user interface. Forexample, the user may select a button on the user interface, input textvia a text box, toggle a control, and/or the like. As a specificexample, the user may interact with the user interface elements to loginto an account, to complete a bank transfer (e.g., when the account isa bank account), to update personal information associated with theaccount, and/or the like.

As shown by reference number 120, user device UD1 may provide, to thestreaming data platform, event messages based on the user's interactionswith the user interface elements. For example, the event messages mayidentify the user's interactions. These event messages may be processedby the first set of server devices and the second set of server devicesto cause corresponding actions to be performed. For example, eventmessages related to a user's use of the user interface to log into anaccount may cause the first set of server devices and the second set ofserver devices to perform a set of actions related to providing the userwith access to the account, such as processing credentials input by theuser of user device UD1, providing an account homepage for display,and/or the like.

As shown by reference number 130, the streaming data platform may beassociated with a set of queues (shown as “Queue 1,” “Queue 2,” and“Queue N”). The streaming data platform may use the queues to queueincoming unprocessed event messages for processing. As further shown inFIG. 1, each queue may be associated with a set of server devices thatprocesses the event messages in the corresponding queue. For example,queue 1 may be associated with the first set of server devices thatincludes server device SD1 and queue 2 may be associated with the secondset of server devices that includes server device SD2. As shown byreference numbers 140-1 and 140-2, the first and second sets of serverdevices may process event messages from corresponding queues.

As shown by reference number 150, the streaming data platform may scaleprocessing of event messages. For example, while the first and secondsets of server devices are processing the event messages, the streamingdata platform may monitor a quantity of event messages in each of thequeues and/or other information related to processing of the eventmessages. The streaming data platform may determine an amount of lagpresent for each of the queues (e.g., based on a quantity of eventmessages associated with each of the queues, based on a quantity ofreceived event messages that have not yet been queued, etc.).Additionally, or alternatively, the streaming data platform may combinethe determination of the amount of lag with other information related tothe queues to determine whether the quantity of server devices in eachset of server devices needs to be scaled. For example, the streamingdata platform may, in addition to the amount of lag, determine whethernetwork lag is present, whether the sets of server devices areexperiencing lag with regard to processing the event messages, a trendrelated to processing of the event messages, and/or the like.

The streaming data platform may scale the quantity of server devices ineach set of server devices up or down. For example, the streaming dataplatform may increase or decrease the quantity of server devicesincluded in each set of server devices (e.g., by providing a set ofinstructions to power on additional server devices or to power downserver devices). The streaming data platform may scale the set of serverdevices for each queue independently (e.g., some sets of server devicesmay be scaled up and other sets of server devices may be scaled down).Additionally, or alternatively, the streaming data platform mayconfigure a server device included in a set of server devices to processevent messages from multiple queues to scale processing of the eventmessages.

As shown by reference number 160, the data streaming platform mayprovide, to another queue (shown as “Queue N”), data related to a mannerin which the sets of server devices were scaled. For example, the datamay identify a quantity of server devices included in each set of serverdevices before and after scaling, a quantity of event messagesassociated with each queue when the streaming data platform scaled thesets of server devices, lag and/or other information related to thequeues and/or the sets of server devices, and/or the like. The dataprovided to queue N may be available for processing, such as by amachine learning module, an analytics module, and/or the like, toimprove future scaling by the streaming data platform, for threatdetection, and/or the like.

As shown by reference number 170, the streaming data platform mayprovide, to user device UD2, the data for display (e.g., the dataprovided to queue N). For example, the data may be provided for displayvia a user interface, a dashboard, and/or the like. In this way, a userof user device UD2 may access a visualization of the data, a reportrelated to the data, and/or the like.

In this way, the streaming data platform may dynamically, and inreal-time or near real-time, scale a quantity of server devices used toprocess event messages in a set of queues. This improves processing ofthe set of event messages by reducing an amount of lag and/or anotherissue related to the processing of the set of event messages. Inaddition, this can prevent the sets of server devices from becomingoverloaded, thereby conserving processing resources of the sets ofserver devices and/or improving processing of the sets of serverdevices. Further, this facilitates more reactive and more accuratescaling of the sets of server devices relative to using historicalinformation, thereby improving scaling and/or operation of the sets ofserver devices.

As indicated above, FIG. 1 is provided merely as an example. Otherexamples are possible and may differ from what was described with regardto FIG. 1. For example, although FIG. 1 was described with regard toserver devices, the implementations apply equally to other types ofcomputing resources, such as applications, containers, virtual machines,and/or the like. In addition, although FIG. 1 was described with regardto processing event messages, the implementations apply equally to othertypes of data, such as commands, requests, and/or the like.

FIG. 2 is a diagram of an example environment 200 in which systemsand/or methods, described herein, may be implemented. As shown in FIG.2, environment 200 may include user device 210-1 through user device210-L (L≥1), server device 220-1 through server device 220-M (M≥1), astreaming data platform 230 within cloud computing environment 232 thatincludes a set of computing resources 234, and a network 240. Devices ofenvironment 200 may interconnect via wired connections, wirelessconnections, or a combination of wired and wireless connections.

User device 210 includes one or more devices capable of receiving,generating, storing, processing, and/or providing information associatedwith interactions of a user of user device 210 with a user interfaceprovided for display via a display associated with user device 210. Forexample, user device 210 may include a desktop computer, a mobile phone(e.g., a smart phone, a radiotelephone, etc.), a laptop computer, atablet computer, a handheld computer, a gaming device, a virtual realitydevice, a wearable communication device (e.g., a smart wristwatch, apair of smart eyeglasses, etc.), or a similar type of device. In someimplementations, user device 210 may provide, to streaming data platform230, event messages associated with interactions of a user of userdevice 210 with a user interface provided for display via a displayassociated with user device 210, as described elsewhere herein.

Server device 220 includes one or more devices capable of receiving,generating, storing, processing, and/or providing information associatedwith event messages received from user device 210. For example, serverdevice 220 may include a server (e.g., in a data center or a cloudcomputing environment), a data center (e.g., a multi-server micro datacenter), a workstation computer, a virtual machine (VM) implemented on acomputing device provided in a cloud computing environment, or a similartype of device. In some implementations, a computing resource (e.g.,computing resource 234) may include one or more server devices 220. Insome implementations, server device 220 may include one or morecomputing resources (e.g., one or more computing resources 234). In someimplementations, server device 220 may process event messages receivedfrom user device 210, as described elsewhere herein. Additionally, oralternatively, server device 220 may receive, from streaming dataplatform 230, an instruction to modify an operation of server device 220(e.g., based on streaming data platform 230 determining to scalecomputing resources used to process event messages), as describedelsewhere herein. In some implementations, server device 220 may be aphysical device implemented within a housing, such as a chassis. In someimplementations, server device 220 may be a virtual device implementedby one or more computer devices of a cloud computing environment or adata center.

Streaming data platform 230 includes one or more devices capable ofmonitoring processing of event messages by a set of computing resourcesand automatically scaling processing of the event messages. For example,streaming data platform 230 may include a cloud server or a group ofcloud servers. In some implementations, streaming data platform 230 maybe designed to be modular such that certain software components can beswapped in or out depending on a particular need. As such, streamingdata platform 230 may be easily and/or quickly reconfigured fordifferent uses.

In some implementations, as shown in FIG. 2, streaming data platform 230may be hosted in cloud computing environment 232. Notably, whileimplementations described herein describe streaming data platform 230 asbeing hosted in cloud computing environment 232, in someimplementations, streaming data platform 230 may not be cloud-based(i.e., may be implemented outside of a cloud computing environment) ormay be partially cloud-based.

Cloud computing environment 232 includes an environment that hostsstreaming data platform 230. Cloud computing environment 232 may providecomputation, software, data access, storage, and/or other services thatdo not require end-user knowledge of a physical location andconfiguration of a system and/or a device that hosts streaming dataplatform 230. As shown, cloud computing environment 232 may include agroup of computing resources 234 (referred to collectively as “computingresources 234” and individually as “computing resource 234”).

Computing resource 234 includes one or more personal computers,workstation computers, server devices, or another type of computationand/or communication device. In some implementations, computing resource234 may host streaming data platform 230. The cloud resources mayinclude compute instances executing in computing resource 234, storagedevices provided in computing resource 234, data transfer devicesprovided by computing resource 234, etc. In some implementations,computing resource 234 may communicate with other computing resources234 via wired connections, wireless connections, or a combination ofwired and wireless connections.

As further shown in FIG. 2, computing resource 234 may include a groupof cloud resources, such as one or more applications (“APPs”) 234-1, oneor more virtual machines (“VMs”) 234-2, one or more virtualized storages(“VSs”) 234-3, or one or more hypervisors (“HYPs”) 234-4.

Application 234-1 includes one or more software applications that may beprovided to or accessed by one or more devices of environment 200.Application 234-1 may eliminate a need to install and execute thesoftware applications on devices of environment 200. For example,application 234-1 may include software associated with streaming dataplatform 230 and/or any other software capable of being provided viacloud computing environment 232. In some implementations, oneapplication 234-1 may send/receive information to/from one or more otherapplications 234-1, via virtual machine 234-2.

Virtual machine 234-2 includes a software implementation of a machine(e.g., a computer) that executes programs like a physical machine.Virtual machine 234-2 may be either a system virtual machine or aprocess virtual machine, depending upon use and degree of correspondenceto any real machine by virtual machine 234-2. A system virtual machinemay provide a complete system platform that supports execution of acomplete operating system (“OS”). A process virtual machine may executea single program, and may support a single process. In someimplementations, virtual machine 234-2 may execute on behalf of a user(e.g., a user of user device 210), and may manage infrastructure ofcloud computing environment 232, such as data management,synchronization, or long-duration data transfers.

Virtualized storage 234-3 includes one or more storage systems and/orone or more devices that use virtualization techniques within thestorage systems or devices of computing resource 234. In someimplementations, within the context of a storage system, types ofvirtualizations may include block virtualization and filevirtualization. Block virtualization may refer to abstraction (orseparation) of logical storage from physical storage so that the storagesystem may be accessed without regard to physical storage orheterogeneous structure. The separation may permit administrators of thestorage system flexibility in how the administrators manage storage forend users. File virtualization may eliminate dependencies between dataaccessed at a file level and a location where files are physicallystored. This may enable optimization of storage use, serverconsolidation, and/or performance of non-disruptive file migrations.

Hypervisor 234-4 provides hardware virtualization techniques that allowmultiple operating systems (e.g., “guest operating systems”) to executeconcurrently on a host computer, such as computing resource 234.Hypervisor 234-4 may present a virtual operating platform to the guestoperating systems, and may manage the execution of the guest operatingsystems. Multiple instances of a variety of operating systems may sharevirtualized hardware resources.

Network 240 includes one or more wired and/or wireless networks. Forexample, network 240 may include a cellular network (e.g., a long-termevolution (LTE) network, a code division multiple access (CDMA) network,a 3G network, a 4G network, a 5G network, or another type of cellularnetwork), a public land mobile network (PLMN), a local area network(LAN), a wide area network (WAN), a metropolitan area network (MAN), atelephone network (e.g., the Public Switched Telephone Network (PSTN)),a private network, an ad hoc network, an intranet, the Internet, a fiberoptic-based network, a cloud computing network, and/or the like, and/ora combination of these or other types of networks.

The number and arrangement of devices and networks shown in FIG. 2 areprovided as an example. In practice, there may be additional devicesand/or networks, fewer devices and/or networks, different devices and/ornetworks, or differently arranged devices and/or networks than thoseshown in FIG. 2. Furthermore, two or more devices shown in FIG. 2 may beimplemented within a single device, or a single device shown in FIG. 2may be implemented as multiple, distributed devices. Additionally, oralternatively, a set of devices (e.g., one or more devices) ofenvironment 200 may perform one or more functions described as beingperformed by another set of devices of environment 200.

FIG. 3 is a diagram of example components of a device 300. Device 300may correspond to user device 210, server device 220, streaming dataplatform 230, and/or computing resource 234. In some implementations,user device 210, server device 220, streaming data platform 230, and/orcomputing resource 234 may include one or more devices 300 and/or one ormore components of device 300. As shown in FIG. 3, device 300 mayinclude a bus 310, a processor 320, a memory 330, a storage component340, an input component 350, an output component 360, and acommunication interface 370.

Bus 310 includes a component that permits communication among thecomponents of device 300. Processor 320 is implemented in hardware,firmware, or a combination of hardware and software. Processor 320 is acentral processing unit (CPU), a graphics processing unit (GPU), anaccelerated processing unit (APU), a microprocessor, a microcontroller,a digital signal processor (DSP), a field-programmable gate array(FPGA), an application-specific integrated circuit (ASIC), or anothertype of processing component. In some implementations, processor 320includes one or more processors capable of being programmed to perform afunction. Memory 330 includes a random access memory (RAM), a read onlymemory (ROM), and/or another type of dynamic or static storage device(e.g., a flash memory, a magnetic memory, and/or an optical memory) thatstores information and/or instructions for use by processor 320.

Storage component 340 stores information and/or software related to theoperation and use of device 300. For example, storage component 340 mayinclude a hard disk (e.g., a magnetic disk, an optical disk, amagneto-optic disk, and/or a solid state disk), a compact disc (CD), adigital versatile disc (DVD), a floppy disk, a cartridge, a magnetictape, and/or another type of non-transitory computer-readable medium,along with a corresponding drive.

Input component 350 includes a component that permits device 300 toreceive information, such as via user input (e.g., a touch screendisplay, a keyboard, a keypad, a mouse, a button, a switch, and/or amicrophone). Additionally, or alternatively, input component 350 mayinclude a sensor for sensing information (e.g., a global positioningsystem (GPS) component, an accelerometer, a gyroscope, and/or anactuator). Output component 360 includes a component that providesoutput information from device 300 (e.g., a display, a speaker, and/orone or more light-emitting diodes (LEDs)).

Communication interface 370 includes a transceiver-like component (e.g.,a transceiver and/or a separate receiver and transmitter) that enablesdevice 300 to communicate with other devices, such as via a wiredconnection, a wireless connection, or a combination of wired andwireless connections. Communication interface 370 may permit device 300to receive information from another device and/or provide information toanother device. For example, communication interface 370 may include anEthernet interface, an optical interface, a coaxial interface, aninfrared interface, a radio frequency (RF) interface, a universal serialbus (USB) interface, a Wi-Fi interface, a cellular network interface, orthe like.

Device 300 may perform one or more processes described herein. Device300 may perform these processes based on processor 320 executingsoftware instructions stored by a non-transitory computer-readablemedium, such as memory 330 and/or storage component 340. Acomputer-readable medium is defined herein as a non-transitory memorydevice. A memory device includes memory space within a single physicalstorage device or memory space spread across multiple physical storagedevices.

Software instructions may be read into memory 330 and/or storagecomponent 340 from another computer-readable medium or from anotherdevice via communication interface 370. When executed, softwareinstructions stored in memory 330 and/or storage component 340 may causeprocessor 320 to perform one or more processes described herein.Additionally, or alternatively, hardwired circuitry may be used in placeof or in combination with software instructions to perform one or moreprocesses described herein. Thus, implementations described herein arenot limited to any specific combination of hardware circuitry andsoftware.

The number and arrangement of components shown in FIG. 3 are provided asan example. In practice, device 300 may include additional components,fewer components, different components, or differently arrangedcomponents than those shown in FIG. 3. Additionally, or alternatively, aset of components (e.g., one or more components) of device 300 mayperform one or more functions described as being performed by anotherset of components of device 300.

FIG. 4 is a flow chart of an example process 400 for monitoring datastreams and scaling computing resources based on the data streams. Insome implementations, one or more process blocks of FIG. 4 may beperformed by streaming data platform 230. In some implementations, oneor more process blocks of FIG. 4 may be performed by another device or agroup of devices separate from or including streaming data platform 230,such as user device 210, server device 220, and computing resource 234.

As shown in FIG. 4, process 400 may include receiving a set of eventmessages to be processed by a set of server devices (block 410). Forexample, streaming data platform 230 may receive (e.g., using computingresource 234, processor 320, communication interface 370, and/or thelike) a set of event messages to be processed by a set of server devices220 and/or another type of computing resource (e.g., computing resource234).

In some implementations, an event message may include a message, orother information, related to interactions of a user of user device 210with a user interface (e.g., with user interface elements, such as abutton, a text box, a toggle control, etc., of the user interface)displayed by a display associated with user device 210. For example, anevent message, when processed, may cause server device 220 to perform anaction. As specific examples, a set of event messages may cause serverdevice 220 to provide various user interfaces for display (e.g., userinterfaces associated with an account), to update an account, to modifya setting for an account, and/or the like. In some implementations,streaming data platform 230 may receive various types of event messages.For example, different types of event messages may be associated withdifferent actions to be performed by server device 220 (e.g., an actionrelated to logging a user into an account, an action related tomodifying an account, an action related to updating a user interfaceelement, etc.), different interactions of a user of user device 210 witha user interface (e.g., a button selection, text input, etc.), and/orthe like.

In some implementations, streaming data platform 230 may receive a setof event messages for a set of interactions by a user of user device 210with a user interface in real-time or near real-time (e.g., as the useris interacting with the user interface), periodically, according to aschedule, based on requesting the set of event messages, and/or thelike. In some implementations, streaming data platform 230 may receivean event message from user device 210 (e.g., via network 240). In someimplementations, streaming data platform 230 may receive hundreds,thousands, or more simultaneous (or near simultaneous) event messagesassociated with hundreds, thousands, or more users. In this way,streaming data platform 230 may receive a set of messages that cannot beprocessed manually or objectively (e.g., in a consistent manner) by ahuman actor. In some implementations, streaming data platform 230 mayreceive an event message via a module and/or a component associated withstreaming data platform 230. For example, a message broker associatedwith streaming data platform 230 may receive an event message from userdevice 210.

In this way, streaming data platform 230 may receive a set of eventmessages prior to assigning each of the set of event messages to a setof queues for processing.

As further shown in FIG. 4, process 400 may include assigning each ofthe set of event messages to a set of queues to prepare the set of eventmessages for processing by the set of server devices (block 420). Forexample, streaming data platform 230 may assign (e.g., using computingresource 234, processor 320, communication interface 370, and/or thelike) each of the set of event messages to a set of queues to preparethe set of event messages for processing by the set of server devices.

In some implementations, a queue may include a data structure in which aset of event messages is stored. In some implementations, a queue mayinclude an ordered data structure, where the queue includes informationthat identifies an order in which a set of event messages was input intothe queue. Additionally, or alternatively, event messages stored in aqueue may be processed from the queue in a particular manner (e.g., in afirst-in, first-out manner, in a priority order, and/or the like).

In some implementations, a queue may be associated with a type of eventmessage, such that the queue stores a particular type of event message,may be priority-based (e.g., where event messages are stored in a queuebased on being associated with a threshold priority), and/or the like.Conversely, a queue may be associated with multiple types of eventmessages, priorities, and/or the like. In some implementations, a set ofserver devices 220 may be associated with one or more queues (e.g., oneor more queues associated with the same or different types of eventmessages). Additionally, or alternatively, a queue may be associatedwith one or more sets of server devices 220.

In some implementations, streaming data platform 230 may assign a set ofevent messages to a set of queues based on information related to theset of event messages and/or the set of queues. For example, streamingdata platform 230 may load balance the set of messages across the set ofqueues so that a difference in a quantity of messages associated witheach queue satisfies a threshold, so that a difference in an amount ofprocessing resource used by different server devices 220 to process theset of event messages satisfies a threshold, and/or the like. In someimplementations, streaming data platform 230 may assign a set of eventmessages to a queue that includes the same or different types of eventmessages.

In this way, streaming data platform 230 may assign each of the set ofevent messages to a set of queues prior to determining values for a setof metrics related to processing the set of event messages.

As further shown in FIG. 4, process 400 may include determining valuesfor a set of metrics related to processing of the set of event messages(block 430). For example, streaming data platform 230 may determine(e.g., using computing resource 234, processor 320, communicationinterface 370, and/or the like) values for a set of metrics related toprocessing of the set of event messages (e.g., by server device 220). Insome implementations, streaming data platform 230 may determine thevalues for the set of metrics as the set of event messages are beingprocessed (e.g., in real-time or near real-time).

In some implementations, the set of metrics may include lag-relatedmetrics (e.g., a set of metrics related to lag in processing the set ofevent messages). For example, lag-related metrics may include a quantityof event messages in a queue, an amount of time between a timestamp forwhen an event message is stored in a queue and a timestamp for when theevent message is processed (or predicted to be processed, such as basedon a rate of processing by server device 220 and a quantity of eventmessages to be processed by server device 220), and/or the like.Additionally, or alternatively, and as additional examples, the set ofmetrics may include an amount of network lag (e.g., an amount of timebetween a timestamp for when an event message was sent by user device210 and a timestamp for when streaming data platform 230 received theevent message), a CPU utilization of server device 220, a memoryutilization of server device 220, historical information related to ademand for processing by server device 220 (e.g., the historicalinformation may identify particular times of the day or days of the weekthat are higher demand times or lower demand times), and/or the like.

In some implementations, streaming data platform 230 may determine thevalues for the set of metrics by monitoring information related to theset of event messages, processing of the set of event messages by serverdevice 220, and/or the like. In some implementations, a module and/or acomponent associated with streaming data platform 230 may monitor thevalues and may provide information identifying the values to anothermodule and/or component associated with streaming data platform 230. Forexample, a message broker associated with streaming data platform 230may monitor the values for the set of metrics and may provideinformation identifying the values to a stream tracker associated withstreaming data platform 230.

In some implementations, streaming data platform 230 may determine ascore for a set of metrics. For example, streaming data platform 230 maydetermine a score for each of the set of metrics (e.g., based on a valuefor each of the metrics satisfying a threshold, being within a thresholdamount of a historical average value, being within a threshold amount ofan expected value, etc.). In some implementations, and continuing withthe previous example, streaming data platform 230 may determine anoverall score for a set of metrics (e.g., an average of each score foreach of the set of metrics, by applying a function to the scores foreach of the set of metrics, a weighted score where different metrics areassociated with different weights, etc.). In some implementations,streaming data platform 230 may use the score to determine whether toscale a quantity of server devices 220 processing the set of eventmessages, as described elsewhere herein.

In this way, streaming data platform 230 may determine values for a setof metrics prior to determining to scale a quantity of server devices220.

As further shown in FIG. 4, process 400 may include determining to scalea quantity of server devices included in the set of server devices basedon the values for the set of metrics (block 440). For example, streamingdata platform 230 may determine (e.g., using computing resource 234,processor 320, communication interface 370, and/or the like) to scale(e.g., modify) a quantity of server devices 220 included in the set ofserver devices 220 based on the values for the set of metrics. In someimplementations, streaming data platform 230 may determine to scale up(e.g., increase) a quantity of server devices 220 included in a set ofserver devices 220 or to scale down (e.g., decrease) a quantity ofserver device 220 included in a set of server devices 220.

In some implementations, streaming data platform 230 may determine toscale a quantity of server devices 220 included in the set of serverdevices 220 based on values for the set of metrics. For example,streaming data platform 230 may determine to scale a quantity of serverdevices 220 included in the set of server devices 220 based on a valuesfor the set of metrics satisfying a threshold, being within a range ofvalues, showing a trend of increasing or decreasing, and/or the like.Additionally, or alternatively, streaming data platform 230 maydetermine to scale a quantity of server devices 220 included in the setof server devices 220 based on a score for the set of metrics (e.g.,separate scores for each metric or an overall score for the set ofmetrics). For example, streaming data platform 230 may determine toscale a quantity of server devices 220 included in the set of serverdevice 220 based on the score satisfying a threshold, being within arange of scores, showing a trend of increasing or decreasing, and/or thelike.

In some implementations, streaming data platform 230 may determine toscale a quantity of server devices 220 based on using a machine learningtechnique. For example, streaming data platform 230 may process valuesand/or scores for the set of metrics using a machine learning techniqueand may determine to scale the quantity of server devices 220 includedin the set of server devices 220 based on a result of processing thevalues and/or the scores. In some implementations, a machine learningtechnique may be used to train a model on data that includes valuesand/or scores for different metrics and information that indicateswhether the quantity of server devices 220 needs to be scaled. Using amachine learning technique in this manner facilitates optimization ofcomputing resources used to process event messages by providingstreaming data platform 230 with the capability to process unstructureddata, to process large quantities of data that do not have easilydiscernable patterns and/or trends, to identify opportunities whenscaling can improve processing of event messages based on combinationsof values and/or scores for the set of metrics, and/or the like.

In some implementations, streaming data platform 230 may process datarelated to the set of event messages to predict that the quantity ofserver devices 220 included in the set of server devices 220 needs to bescaled. For example, streaming data platform 230 may process the datausing a machine learning module, to identify a pattern and/or a trend inthe data, and/or the like to predict that the quantity of server devices220 included in the set of server devices 220 needs to be scaled.

In some implementations, streaming data platform 230 may determine toscale a subset of server devices 220 for a subset of the set of queuesbased on the values for the set of metrics. For example, streaming dataplatform 230 may determine to scale a first subset of server devices220, rather than a second subset of server devices 220, based on thevalues for the set of metrics for the first subset of server devices 220satisfying a threshold and the values for the set of metrics for thesecond subset of server devices 220 not satisfying the threshold.Continuing with the previous example, the first subset of server devices220 and the second subset of server devices 220 may be associated withdifferent queues, with processing different types of event messages,and/or the like.

In this way, streaming data platform 230 may determine a quantity ofevent messages in one or more queues, a quantity of event messages to bestored in one or more queues, and/or may determine other informationrelated to the event messages and/or processing of the event messages,and/or the like to determine whether to scale server devices 220 (orother computing resources). For example, streaming data platform 230 mayanalyze event messages stored in one or more queues associated withstreaming data platform 230, analyze event messages that streaming dataplatform 230 has received but has not stored in the one or more queues,and/or the like. In addition, in this way, streaming data platform 230may perform this determination in real-time or near real-time tofacilitate faster and/or more accurate scaling of computing resourcesbased on changes in demand for the server devices 220.

In some implementations, streaming data platform 230 may determine anamount by which to scale the quantity of server devices 220 included inthe set of server devices 220. For example, streaming data platform 230may determine a quantity by which to scale the quantity of serverdevices 220 included in the set of server devices 220, a processingcapacity by which to scale the quantity of server devices 220, and/orthe like. In some implementations, streaming data platform 230 maydetermine an amount by which to scale the quantity of server devices 220such that values for the set of metrics satisfy a threshold, such thatscores for the set of metrics satisfy a threshold, such that each serverdevice 220 has a threshold quantity of event messages, and/or the like.

In some implementations, streaming data platform 230 may determine anamount by which to scale a quantity of server devices 220 based on aquantity of event messages being received (e.g., in real-time or nearreal-time). For example, streaming data platform 230 may determine anamount by which to scale the quantity of server device 220 based on apercentage change in the quantity of event message satisfying athreshold, based on a trend in a change in the quantity of eventmessages, based on a change in the quantity of event messages satisfyingthreshold, and/or the like.

In some implementations, streaming data platform 230 may predict valuesfor the set of metrics and/or scores for the set of metrics. Forexample, streaming data platform 230 may predict values and/or scoresfor the set of metrics for the modified quantity of server devices 220using historical data that identifies different quantities of serverdevices 220, different quantities of event messages to be processed,and/or different values and/or scores for the set of metrics, using amachine learning technique, and/or the like. In this way, streaming dataplatform 230 may determine whether scaling the quantity of serverdevices 220 will be effective in reducing or eliminating an issueassociated with processing the set of event messages (e.g., lag). Thisconserves processing resources that would otherwise be consumed scalingthe quantity of server devices 220 in an ineffective manner.

In this way, streaming data platform 230 may determine to scale aquantity of server devices 220 prior to providing a set of instructionsto scale the quantity of server devices 220.

As further shown in FIG. 4, process 400 may include providing a set ofinstructions to scale the quantity of server devices included in the setof server devices (block 450). For example, streaming data platform 230may provide (e.g., using computing resource 234, processor 320,communication interface 370, and/or the like) a set of instructions toscale the quantity of server devices 220 included in the set of serverdevices 220. In some implementations, streaming data platform 230 mayprovide the set of instructions to server device 220. In someimplementations, the set of instructions may be associated withmodifying the quantity of server devices 220 for a subset of serverdevices 220 associated with the set of queues.

In some implementations, streaming data platform 230 may provide the setof instructions to cause one or more additional server devices 220 toprocess the set of event messages for a particular queue of the set ofqueues. For example, streaming data platform 230 may provide the set ofinstructions to a set of additional server devices 220 to cause the setof additional server devices 220 to power on and process the set ofevent messages for a particular queue. Additionally, or alternatively,streaming data platform 230 may provide the set of instructions to causeone or more server devices 220 to stop processing the set of eventmessages for a particular queue. For example, streaming data platform230 may provide the set of instructions to server device 220 to stopprocessing the set of event messages and/or to cause server device 220to power off.

In some implementations, streaming data platform 230 may provideinformation identifying whether streaming data platform 230 hasidentified a high demand or a low demand for server devices 220 based onthe set of metrics (e.g., to server device 220). In this way, serverdevice 220 may determine a manner in which to scale server devices 220,thereby conserving processing resources of streaming data platform 230.

In this way, streaming data platform 230 may provide a set ofinstructions to scale the quantity of server devices 220 prior to, or inassociation with, outputting information related to the values for theset of metrics.

As further shown in FIG. 4, process 400 may include outputtinginformation related to the values for the set of metrics, the set ofserver devices, and/or processing of the set of event messages (block460). For example, streaming data platform 230 may output (e.g., usingcomputing resource 234, processor 320, communication interface 370,and/or the like) information related to the values for the set ofmetrics, the set of server devices, and/or processing of the set ofevent messages.

In some implementations, streaming data platform 230 may provide data(e.g., related to scaling of server devices 220 and/or processing ofevent messages) for display via a user interface (e.g., a dashboard)that is accessible via user device 210. For example, the user interfacemay provide various visualizations, analytics results, and/or the likefor display. Additionally, or alternatively, streaming data platform 230may provide a notification for display in association with providing theset of instructions. For example, the notification may includeinformation that identifies that the quantity of server devices 220included in the set of server devices 220 has been or is being scaled.In this way, streaming data platform 230 may perform an action tofacilitate accessibility of data related to processing the set of eventmessages.

In some implementations, streaming data platform 230 may perform anotheraction. In some implementations, and as an example, streaming dataplatform 230 may provide the data to a particular queue, of the set ofqueues, to provide one or more modules with accessibility to the data.For example, the one or more modules may relate to a machine learningtechnique, a threat detection technique, a fault detection technique,and/or the like.

In some implementations, streaming data platform 230 may process datarelated to processing of the set of event messages using a machinelearning technique to identify a pattern in the data. For example, thepattern in the data may be used to predictively scale the quantity ofserver devices 220 included in the set of server devices 220. Continuingwith the previous example, streaming data platform 230 may determine,based on a result of using the machine learning technique, that thepattern in the data is similar to a historical pattern of data.Continuing still with the previous example, a machine learning moduleassociated with streaming data platform 230 may have trained a model onhistorical patterns of data and information identifying whether thehistorical patterns were associated with a need to scale server devices220, an amount by which to scale server devices 220, and/or the like.This facilitates early identification of changes in data that mayprecede a need to scale server devices 220. Additionally, oralternatively, streaming data platform 230 may process the data todetect a threat to a system after providing the data to facilitateaccessibility of the data.

In some implementations, streaming data platform 230 may trigger analarm to indicate the presence of an issue related to processing of theevent messages (e.g., that lag associated with processing the eventmessages satisfies a threshold). Additionally, or alternatively,streaming data platform 230 may send a message to user device 210associated with a network administrator indicating an issue associatedwith processing of the set of event messages. Additionally, oralternatively, streaming data platform 230 may generate a report thatincludes information identifying a manner in which the set of serverdevices 220 were scaled, values for the set of metrics before and/orafter scaling, and/or the like. Additionally, or alternatively,streaming data platform 230 may perform analytics on processing of theset of event messages and/or the set of server devices 220. For example,streaming data platform 230 may perform analytics on metrics related toprocessing of the set of event messages and/or on the set of serverdevices 220.

In this way, streaming data platform 230 may output information relatedto the values for the set of metrics.

Although FIG. 4 shows example blocks of process 400, in someimplementations, process 400 may include additional blocks, fewerblocks, different blocks, or differently arranged blocks than thosedepicted in FIG. 4. Additionally, or alternatively, two or more of theblocks of process 400 may be performed in parallel.

FIG. 5 is a diagram of an example implementation 500 related to exampleprocess 400 shown in FIG. 4. FIG. 5 shows the interaction of variouscomponents and/or modules of streaming data platform 230 with respect tomonitoring data streams and scaling computing resources based on thedata streams. As shown in FIG. 5, implementation 500 includes a firstset of server devices 220 that includes server device 220-1, a secondset of server devices 220 that includes server device 220-2, andstreaming data platform 230 that includes various components and/ormodules, such as a message broker, a stream tracker, and a dashboard.

As shown in FIG. 5, and by reference numbers 510-1 and 510-2, sets ofserver devices 220 may process event messages stored in variouscorresponding queues (e.g., shown as “Queue 1” and “Queue 2”). Forexample, the queues may be associated with the message broker. In someimplementations, the message broker may have received the event messagesfrom user device 210 (not shown) and may have assigned the eventmessages to queues to be processed. As shown by reference number 520,the message broker may provide, to the stream tracker, data related toevent messages. For example, the stream tracker may monitor a set ofmetrics related to the processing of the event messages using the datarelated to the event messages (e.g., may determine values for the set ofmetrics). As shown by reference number 530, the stream tracker maydetermine to scale processing of the event messages. For example, thestream tracker may determine to scale processing of the event messagesbased on values for the set of metrics.

As shown by reference number 540, streaming data platform 230 may scalethe first set of server devices 220 and/or the second set of serverdevices 220 (e.g., by increasing or decreasing a quantity of serverdevices 220 included in each of the first set of server devices 220 andthe second set of server devices 220). As shown by reference number 550,the stream tracker may provide, to a queue associated with the messagebroker (e.g., shown as “Queue N”), data related to metrics and/orscaling. For example, the queue to which the stream tracker provides thedata may be available to a machine learning module, a threat detectionmodule, and/or the like for further processing. As shown by referencenumber 560, the stream tracker may additionally provide data related tometrics and/or scaling for display via a dashboard associated withstreaming data platform 230.

As indicated above, FIG. 5 is provided merely as an example. Otherexamples are possible and may differ from what was described with regardto FIG. 5.

In this way, streaming data platform 230 may process data related toprocessing of event messages to dynamically scale server devices 220used to process the event messages. This improves an accuracy of scalinga quantity of server devices 220 used to process event messages. Inaddition, this improves a user experience of applications and/or userinterfaces associated with the event messages being processed byfacilitating quick fixing of issues related to processing of the eventmessages, facilitating faster processing of the event messages, and/orthe like. Further, this reduces or eliminates a need to use scheduledand/or predictive scaling, thereby conserving processing resourcesassociated with implementing predictive and/or scheduled scaling.

Although some implementations described herein were described withrespect to processing event messages, the implementations apply equallyto processing other types of data, such as commands, requests, and/orthe like. Additionally, or alternatively, although some implementationsdescribed herein were described with regard to scaling server devices220, the implementations apply equally to scaling other types ofcomputing resources.

The foregoing disclosure provides illustration and description, but isnot intended to be exhaustive or to limit the implementations to theprecise form disclosed. Modifications and variations are possible inlight of the above disclosure or may be acquired from practice of theimplementations.

As used herein, the term component is intended to be broadly construedas hardware, firmware, or a combination of hardware and software.

Some implementations are described herein in connection with thresholds.As used herein, satisfying a threshold may refer to a value beinggreater than the threshold, more than the threshold, higher than thethreshold, greater than or equal to the threshold, less than thethreshold, fewer than the threshold, lower than the threshold, less thanor equal to the threshold, equal to the threshold, or the like.

It will be apparent that systems and/or methods, described herein, maybe implemented in different forms of hardware, firmware, or acombination of hardware and software. The actual specialized controlhardware or software code used to implement these systems and/or methodsis not limiting of the implementations. Thus, the operation and behaviorof the systems and/or methods were described herein without reference tospecific software code—it being understood that software and hardwarecan be designed to implement the systems and/or methods based on thedescription herein.

Even though particular combinations of features are recited in theclaims and/or disclosed in the specification, these combinations are notintended to limit the disclosure of possible implementations. In fact,many of these features may be combined in ways not specifically recitedin the claims and/or disclosed in the specification. Although eachdependent claim listed below may directly depend on only one claim, thedisclosure of possible implementations includes each dependent claim incombination with every other claim in the claim set.

No element, act, or instruction used herein should be construed ascritical or essential unless explicitly described as such. Also, as usedherein, the articles “a” and “an” are intended to include one or moreitems, and may be used interchangeably with “one or more.” Furthermore,as used herein, the term “set” is intended to include one or more items(e.g., related items, unrelated items, a combination of related andunrelated items, etc.), and may be used interchangeably with “one ormore.” Where only one item is intended, the term “one” or similarlanguage is used. Also, as used herein, the terms “has,” “have,”“having,” or the like are intended to be open-ended terms. Further, thephrase “based on” is intended to mean “based, at least in part, on”unless explicitly stated otherwise.

What is claimed is:
 1. A device, comprising: one or more memories; andone or more processors, communicatively coupled to the one or morememories, to: receive a set of event messages to be processed by a setof server devices; store, based on receiving the set of event messages,the set of event messages in a set of queues, the set of queues storingthe set of event messages prior to processing by the set of serverdevices; determine values for a set of metrics related to processing theset of event messages; determine to scale a quantity of server devicesincluded in the set of server devices based on the values for the set ofmetrics; provide a set of instructions to scale the quantity of serverdevices included in the set of server devices; and output informationrelated to at least one of the values for the set of metrics, the set ofserver devices, or the processing of the set of event messages.
 2. Thedevice of claim 1, wherein the set of metrics includes lag relatedmetrics.
 3. The device of claim 1, wherein the values for the set ofmetrics are determined as the set of event messages are being processed.4. The device of claim 1, wherein the one or more processors are furtherto: perform an action to facilitate accessibility of data related toprocessing of the set of event messages; and provide the data to aparticular queue, of the set of queues, to provide one or more moduleswith accessibility to the data, the one or more modules being associatedwith to at least one of: a machine learning technique, a threatdetection technique, or a fault detection technique.
 5. The device ofclaim 1, wherein each queue of the set of queues is associated with adifferent subset of event messages and a different subset of serverdevices.
 6. The device of claim 1, wherein the one or more processorsare further to: scale a subset of server devices for a subset of the setof queues based on the values for the set of metrics.
 7. The device ofclaim 6, wherein the subset of server devices is scaled based on thevalues for a set of metrics, associated with the subset of serverdevices, meeting a threshold.
 8. A method, comprising: receiving, by adevice, a set of event messages to be processed by a set of serverdevices; storing, by the device and based on receiving the set of eventmessages, the set of event messages in a set of queues, the set ofqueues storing the set of event messages prior to processing by the setof server devices; determining, by the device, values for a set ofmetrics related to processing the set of event messages; determining, bythe device, to modify a quantity of server devices included in the setof server devices based on the values for the set of metrics; providing,by the device, a set of instructions to modify the quantity of serverdevices included in the set of server devices; and outputting, by thedevice, information related to at least one of the values for the set ofmetrics, the set of server devices, or the processing of the set ofevent messages.
 9. The method of claim 8, further comprising: processingthe values for the set of metrics using a machine learning techniqueafter determining the values for the set of metrics; and whereindetermining to modify the quantity of server devices further comprises:determining to modify the quantity of server devices based on a resultof using the machine learning technique.
 10. The method of claim 8,further comprising: providing a notification for display in associationwith providing the set of instructions, wherein the notificationincludes information identifying that the quantity of server devicesincluded in the set of server devices is being scaled.
 11. The method ofclaim 8, further comprising: performing an action to facilitateaccessibility of data related to processing of the set of eventmessages; and providing the data to a particular queue, of the set ofqueues, to provide one or more modules with accessibility to the data,the one or more modules being associated with to at least one of: amachine learning technique, a threat detection technique, or a faultdetection technique.
 12. The method of claim 8, wherein each queue ofthe set of queues is associated with a different subset of eventmessages and a different subset of server devices.
 13. The method ofclaim 8, further comprising: scaling a subset of server devices for asubset of the set of queues based on the values for the set of metrics.14. The method of claim 13, wherein the subset of server devices isscaled based on the values for a set of metrics, associated with thesubset of server devices, meeting a threshold.
 15. A non-transitorycomputer-readable medium storing instructions, the instructionscomprising: one or more instructions, when executed by one or moreprocessors, cause the one or more processors to: receive a set of eventmessages to be processed by a set of server devices; determine valuesfor a set of metrics related to processing the set of event messagesbeing processed, by the set of server devices, from a set of queues, thevalues for the set of metrics being determined as the set of eventmessages are being processed; determine to scale a quantity of serverdevices included in the set of server devices based on the values forthe set of metrics, the quantity of server devices being scaled toincrease the quantity of server devices or to decrease the quantity ofserver devices; provide a set of instructions to scale the quantity ofserver devices included in the set of server devices; and outputinformation related to at least one of the values for the set ofmetrics, the set of server devices, or the processing of the set ofevent messages.
 16. The non-transitory computer-readable medium of claim15, wherein the set of metrics includes lag related metrics.
 17. Thenon-transitory computer-readable medium of claim 15, wherein the valuesfor the set of metrics are determined as the set of event messages arebeing processed.
 18. The non-transitory computer-readable medium ofclaim 15, wherein the one or more instructions, when executed by the oneor more processors, further cause the one or more processors to: performan action to facilitate accessibility of data related to processing ofthe set of event messages; and provide the data to a particular queue,of the set of queues, to provide one or more modules with accessibilityto the data, the one or more modules being associated with to at leastone of: a machine learning technique, a threat detection technique, or afault detection technique.
 19. The non-transitory computer-readablemedium of claim 18, wherein the one or more instructions, when executedby the one or more processors, further cause the one or more processorsto: process the data to detect a threat to a system after providing thedata to facilitate accessibility of the data.
 20. The non-transitorycomputer-readable medium of claim 15, wherein each queue of the set ofqueues is associated with a different subset of event messages and adifferent subset of server devices.